// Copyright (c) 2020 Presto Labs Pte. Ltd.
// Author: taekwon

#include <execinfo.h>
#include <gflags/gflags.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>

// #include <catboost/libs/model_interface/wrapped_calcer.h>
#include "presto/quant/feature/linear_model/catboost/wrapped_calcer.h"

#include "coin2/exchange/base/log/strategy_logger.h"

// DEFINE_string(end_date, "2020-03-01", "end_date");

int main(int argc, char* argv[]) {
  using coin2::exchange::base::strategy_util::StrategyLogReader;
  google::InitGoogleLogging(argv[0]);
  LOG(ERROR) << "Catboost EVAL";
  ModelCalcerWrapper calcer("/remote/iosg/home-13/taekwon/workspace/fastfeature/coinstrat/test.cbm");
  std::vector<float> floatFeatures = {-4.81470281e+00,  5.94660167e+01,  2.63425477e+01,  2.71190427e+01,
        4.31085792e+00,  2.15194067e+01,  1.20869543e+01,  1.30000000e+01,
       -1.61756488e+01,  7.27769770e+01,  1.87768939e+01,  2.41320658e+01,
        4.12748474e-01,  2.12706092e+01,  1.12031539e+01,  1.40000000e+01,
       -1.61756488e+01,  1.38062840e+02,  5.04052959e+01,  6.58285707e+01,
        6.48961461e-01,  3.76240220e+01,  2.87898816e+01,  1.40000000e+01,
       -1.61756488e+01,  1.38062840e+02,  5.48894249e+01,  6.47502211e+01,
        4.37734015e+01,  1.14436593e+01,  2.92324980e+01,  1.00000000e+01,
       -1.39464575e+02,  1.38062840e+02,  2.83089258e+01,  3.00606143e+01,
       -1.09305666e+01,  1.14436593e+01,  3.31912472e+01,  1.00000000e+01,
       -6.99275073e+02,  3.16679037e+02, -1.54647831e+02, -8.79186527e+01,
       -3.54698500e+02,  1.70429508e+02,  4.27969692e+00,  1.40000000e+01,
       -1.11608200e+03,  3.16679037e+02, -5.11644955e+02, -4.21005859e+02,
       -6.42508387e+02,  1.70429508e+02, -2.08487897e+02,  1.40000000e+01,
        6.12139702e-04,  4.84939432e-04,  3.48567963e-04,  2.99207371e-04};
  // std::vector<std::string> catFeatures = {"one", "two", "three"};
  // std::cout << calcer.Calc(floatFeatures, catFeatures) << std::endl;
  std::cout << calcer.CalcFlat(floatFeatures) << std::endl;
  return 0;
}
